return -ENOSYS;
}
-static int __init gnttab_init(void)
+
+int gnttab_resume(void)
{
gnttab_setup_table_t setup;
unsigned long frames[NR_GRANT_FRAMES];
for ( i = 0; i < NR_GRANT_ENTRIES; i++ )
gnttab_free_list[i] = i + 1;
+
+ return 0;
+}
+
+int gnttab_suspend(void)
+{
+ int i;
+ for ( i = 0; i < NR_GRANT_FRAMES; i++ )
+ clear_fixmap(FIX_GNTTAB_END - i);
+ return 0;
+}
+
+static int __init gnttab_init(void)
+{
+ BUG_ON(gnttab_resume());
/*
* /proc/xen/grant : used by libxc to access grant tables
#define usbif_resume() do{}while(0)
#endif
+ extern int gnttab_suspend(void);
+ extern int gnttab_resume(void);
+
extern void time_suspend(void);
extern void time_resume(void);
extern unsigned long max_pfn;
irq_suspend();
+ gnttab_suspend();
+
HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
clear_fixmap(FIX_SHARED_INFO);
HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list =
virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT;
+ gnttab_resume();
irq_resume();